'''
Created on 12/06/2010

@author: kivson
'''
import array
import binario
class Desesconde(object):
    '''
    Classe para decodificar a imagem
    '''
    TAMANHOCABECALHO = 8*4

    def __init__(self, bytes):
        '''
        Constructor
        '''
        self._imgBytes = bytes
        self.binConvert = binario.ConverteBin()
    def iterImgBytes(self):
        for rgb in self._imgBytes:
            for cor in rgb:
                yield cor
    
    def run(self):
        cores = self.iterImgBytes()
        qtdDeBytes = ''
        for i in xrange(self.TAMANHOCABECALHO):
            cor = cores.next()
            qtdDeBytes += (str(cor & 1))
        qtdDeBytes = self.binConvert.toDec(qtdDeBytes)
        
        
        self.saida = []
        for i in xrange(qtdDeBytes):
            byte= ''
            for j in xrange(8):
                cor = cores.next()
                byte += (str(cor & 1))
            char = self.binConvert.toDec(byte)
            letra = chr(char)
            #print letra
            self.saida.append(letra)
    
    def exporta(self,nome):
        out = file(nome, 'w')
        for i in self.saida:
            out.write(i)
        out.close()
    
        #print qtdDeBytes
if __name__ == "__main__":
    import Image
    import encode
    fig = Image.open('../yoda.jpg')
    data = fig.getdata()
    arquivo = '../teste'
    esc = encode.Esconde(data, arquivo)
    #print list(esc._imgBytes)[:10]
    esc.run()
    #print list(esc._novaImgBytes)[:10]
    #print esc._tamanhoArquivo
    fig2 = Image.new('RGB',fig.size)
    fig2.putdata(esc._novaImgBytes)
    fig2.save('codificada','JPEG')
    data2 = fig2.getdata()
    fig3 = Image.open('codificada')
    
    #print len (esc._novaImgBytes)
    dec = Desesconde(data2)
    dec.run()
    dec.exporta('saida.txt')